O documento discute estruturas de controle em shell scripts, incluindo if/then, if/then/else, elif e comparações numéricas e de strings. Ele fornece exemplos de como usar essas estruturas para desviar o fluxo de acordo com condições e repetir blocos de comandos.
5. if...then...else
A estrutura if...then...else é utilizada para execução de
um determinado bloco de comando caso a condição
seja satisfeita e outro bloco caso contrário.
if command
then
commands
else
commands
fi
6. if...then...else
#!/bin/bash
echo "Digite um nome de usuário do sitema: "
read testuser
if grep $testuser /etc/passwd
then
echo "Arquivos do Usuário $testuser:"
ls -a /home/$testuser/.b*
else
echo "Usuário $testuser não existe"
fi
7. elif
Às vezes, você deve precisa de validar diversas situações no
seu código script. Em vez de ter que escrever declarações
separadas if, então, você pode usar uma versão alternativa,
um comando que realiza testes aninhados.
if command1
then
commands
elif command2
then
more commands
fi
8. Comparação
Os comandos de teste fornecem uma maneira de
testar as diferentes condições em uma
instrução if...then. Se a
condição listada no comando de teste for
verdade então a condição if...then será
satisfeita.
O shell bash fornece uma maneira alternativa de
declarar o comando de teste em um if...then
10. Comparação
Existem três classes de condições de o
comando de teste pode avaliar:
■ comparações numéricas
■ comparações String
■ comparações Arquivo
11. Comparação Numérica
O método mais comum para usar o comando de
teste é realizar uma comparação de dois
valores numéricos. Tabela a seguir mostra a lista
de parâmetros de condição usado para testar
dois valores.
12. Comparação Numérica
n1 -eq n2 : Verifique se n1 é igual a n2.
n1-ge n2 :Verifique se n1 é maior ou igual a n2.
n1-gt n2 : Verifique se n1 é maior do que n2.
n1-le n2 : Verifique se n1 for menor ou igual a n2.
n1-lt n2 : Verifique se n1 for inferior a n2.
n1-ne n2 : Verifique se o n1 não é igual a n2.
13. Comparação Numérica
#!/bin/bash
echo "Escreva um número: "
read val1
echo "Escreva um número: "
read val2
if [ $val1 -gt $val2 ]
then
echo "O valor $val1 é maior que $val2"
else
echo "O valor $val2 é maior que $val1"
fi
14. Comparação de Strings
O comando de teste também permite realizar
comparações de valores de Strings. No
próximo slide será apresentado uma tabela
com operadores para comparação entre
strings.
15. Comparação de Strings
str1 = str2 : Check if str1 is the same as string str2.
str1 != str2 : Check if str1 is not the same as str2.
str1 < str2 : Check if str1 is less than str2.
str1 > str2 : Check if str1 is greater than str2.
-n str1 : Check if str1 has a length greater than zero.
-z str1 : Check if str1 has a length of zero.
16. Comparação de Strings
#!/bin/bash
echo "Qual o seu login de usuario neste momento? "
read testuser
if [ $USER != $testuser ]
then
echo "This isn’t $testuser"
else
echo "Welcome $testuser"
fi
17. Comparação de Strings
#!/bin/bash
echo "Digite a primeira String: "
read var1
echo "Digite a segundo String: "
read var2
if [ $var1 > $var2 ]
then
echo "A string $var1 é maior que $var2"
else
echo "A string $var1 não é maior que $var2"
fi
20. Comparação de Arquivos/Diretórios
-d file Check if file exists and is a directory.
-e file Checks if file exists.
-f file Checks if file exists and is a file.
-r file Checks if file exists and is readable.
-s file Checks if file exists and is not empty.
-w file Checks if file exists and is writable.
-x file Checks if file exists and is executable.
-O file Checks if file exists and is owned by the current user.
-G file Checks if file exists and the default group is the same as the
current user.
file1 -nt file2 Checks if file1 is newer than file2.
file1 -ot file2 Checks if file1 is older than file2.
22. Comparação de Arquivos/Diretórios
#!/bin/bash
# check if a file
if [ -e $HOME ]
then
echo "The object exists, is it a file?"
if [ -f $HOME ]
then
echo "Yes, it’s a file!"
else
echo "No, it’s not a file!"
if [ -f $HOME/.bash history ]
then
echo "But this is a file!"
fi
fi
else
echo "Sorry, the object doesn’t exist"
fi